package com.devframe.maven.plugin;


import org.apache.commons.lang.StringUtils;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.project.MavenProject;

import java.io.File;
import java.io.IOException;

/**
 *
 * @goal fileCopy
 * @phase package
 * @requiresProject
 * @threadSafe
 * @requiresDependencyResolution runtime
 */
public class FileCopyMojo extends AbstractMojo
{
	
   
    /**
     * The Maven project.
     *
     * @parameter default-value="${project}"
     * @required
     * @readonly
     */
    private MavenProject myProject;
    /**
     *  相对于当前的项目,在同一个workspace中从其他项目拷贝过来
     *  
     *  如zbs.web.demo1/src/main/webapp/pages/plugindemo1
     * @parameter
     * @required
     */
    private String fromDir;
    
    /**
     * 拷贝到项目的某文件夹中，如果没有文件夹则自动创建
     * 如:src/main/resources/pages
     * @parameter
     * @required
     */
    private  String targetDir;
    
 
	
	public void execute() throws MojoExecutionException {
		super.getLog().info("文件拷贝开始");
		if(StringUtils.isEmpty(fromDir)){
			throw new MojoExecutionException("fromDir为空，需指定相对于当前的项目,在同一个workspace中从其他项目拷贝过来");
		}
		if(StringUtils.isEmpty(targetDir)){
			throw new MojoExecutionException("toDir为空，需指定拷贝到项目的什么文件夹中，如果没有则自动创建");
		}
		
		String tmplFromDir=myProject.getBasedir().getPath()+"/../"+fromDir;
		super.getLog().info("fromDir="+fromDir);
		File fromFile=new File(tmplFromDir);
		String tmplToDir=myProject.getBasedir().getPath()+"/"+targetDir;
		super.getLog().info("targetDir="+targetDir);
		File toFile=new File(tmplToDir);
		try {
			FileCopyUtil.copy(fromFile,toFile);
		} catch (IOException e) {
			e.printStackTrace();
			super.getLog().error("文件拷贝出现异常",e);
		}
		super.getLog().info("文件拷贝结束");
	}

}
